package snowflake_util

import (
	"github.com/bwmarrin/snowflake"
	"github.com/pkg/errors"
	"time"
	"trpg-common/logger"
)

var node *snowflake.Node

func init() {
	startTime := "2023-12-31"
	var machineID int64 = 500
	var st time.Time
	// 格式化 1月2号下午3时4分5秒  2006年
	st, err := time.Parse("2006-01-02", startTime)
	if err != nil {
		logger.Logger.Panicf("%+v", errors.Wrap(err, "error in convert string to time"))
	}

	snowflake.Epoch = st.UnixNano() / 1e6
	node, err = snowflake.NewNode(machineID)
	if err != nil {
		logger.Logger.Panicf("%+v", errors.Wrap(err, "error in creating snow flake node"))
	}
}

// SnowFlakeID 生成 64 位的 雪花 ID
func SnowFlakeID() int64 {
	return node.Generate().Int64()
}
